package w83b.w83bOperacionesPaso.w83bIncidencias;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import w83b.w83bBeans.W83bDelegadosBean;
import w83b.w83bBeans.W83bDocBean;
import w83b.w83bBeans.W83bNuevaIncidenciasBean;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaAgrupacionesOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bGuardarIncidenciasOPAction extends Q70ActionPasoOP{

	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		//Guardamos la accion en el contexto
			contexto.set("action",request.getParameter("action"));
			W83bNuevaIncidenciasBean incidenciasBean = new W83bNuevaIncidenciasBean();
			
			String[] listaDnis = request.getParameter("listaChecks").split("__");
			
			int nDelegadosHombresNuevos = 0;
			int nDelegadosMujeresNuevos = 0;
			
			incidenciasBean.setIncidenciaTerritorio(request.getParameter("incidenciaTerritorio_numerico"));
			incidenciasBean.setIncidenciaAnyo(request.getParameter("incidenciaAnyo_numerico"));
			incidenciasBean.setIncidenciaNumero(request.getParameter("incidenciaNumero_numerico"));
			
			incidenciasBean.setActaTerritorio(request.getParameter("actaTerritorio_numerico"));
			incidenciasBean.setActaAnyo(request.getParameter("actaAnyo_numerico"));
			incidenciasBean.setActaNumero(request.getParameter("actaNumero_numerico"));
			
			incidenciasBean.setFecEntrada(request.getParameter("fechaEntrada"));
			incidenciasBean.setFecRegistro(request.getParameter("fechaRegistro"));
			incidenciasBean.setNumRegistroES(request.getParameter("numRegistro"));
			incidenciasBean.setTipoSolicitante(request.getParameter("comboTipoSolicitante"));
			incidenciasBean.setDniSolicitante(request.getParameter("dniSolicitante"));
			incidenciasBean.setNumSolicitante(request.getParameter("numSolicitante"));
			incidenciasBean.setNombreSolicitante(request.getParameter("nombreSolicitante"));
			incidenciasBean.setObservaciones(request.getParameter("observaciones"));
			incidenciasBean.setTipologiaIncidencia(request.getParameter("tipoIncidencia"));
			incidenciasBean.setMotivoBaja(request.getParameter("motivoBaja"));
			
			List listaDelegados = (ArrayList)contexto.get("w83bListaDelegadosIncidencias");
			
			HashMap numDelegadosMasPorSindicato = new HashMap();
			
			for(int i=0,size=listaDnis.length;i<size;i++){
				if(StringUtils.isNotEmpty(listaDnis[i])){
					W83bDelegadosBean delegado = new W83bDelegadosBean();//NOPMD
					
					delegado.setActaTerritorio(incidenciasBean.getActaTerritorio());
					delegado.setActaAnyo(incidenciasBean.getActaAnyo());
					delegado.setActaNum(incidenciasBean.getActaNumero());
					
					delegado.setCodBaja(request.getParameter("motivoBaja_numerico_"+listaDnis[i]));
					delegado.setFechaBaja(request.getParameter("fechaBajaDelegado_"+listaDnis[i]));
					delegado.setCodColegio(request.getParameter("comboCodColegio_"+listaDnis[i]));
					delegado.setDniDelegado(request.getParameter("dniDelegado_"+listaDnis[i]));
					delegado.setPrimerApellidoDelegado(request.getParameter("primerApellidoDelegado_"+listaDnis[i]));
					delegado.setSegundoApellidoDelegado(request.getParameter("segundoApellidoDelegado_"+listaDnis[i]));
					delegado.setNombreDelegado(request.getParameter("nombreDelegado_"+listaDnis[i]));
					delegado.setSexoDelegado(request.getParameter("comboSexoDelegado_"+listaDnis[i]));
					if(W83bClsConstantes.CONSTANTE_VARON.equals(delegado.getSexoDelegado())){
						nDelegadosHombresNuevos++;
					}else if(W83bClsConstantes.CONSTANTE_MUJER.equals(delegado.getSexoDelegado())){
						nDelegadosMujeresNuevos++;						
					}
					delegado.setCodSindicato(request.getParameter("codSindicato_"+listaDnis[i]));
					delegado.setFechaAlta(request.getParameter("fechaAltaDelegado_"+listaDnis[i]));
					
					delegado.setDniSustituido(listaDnis[i]);
					
					String delegados = (String)numDelegadosMasPorSindicato.get(delegado.getCodSindicato()+"_"+delegado.getCodColegio()+"_"+delegado.getSexoDelegado());
					if(StringUtils.isEmpty(delegados)){
						delegados = "0";
					}
					int delegadosInt = Integer.parseInt(delegados);
					delegados = String.valueOf((delegadosInt
							+1));
					
					numDelegadosMasPorSindicato.put(delegado.getCodSindicato()+"_"+delegado.getCodColegio()+"_"+delegado.getSexoDelegado(), delegados
							);
					
					W83bDelegadosBean delegadoAux = new W83bDelegadosBean();//NOPMD
					delegadoAux.setDniDelegado(listaDnis[i]);
					
					delegadoAux = (W83bDelegadosBean)listaDelegados.get(listaDelegados.indexOf(delegadoAux));
					if(W83bClsConstantes.CONSTANTE_VARON.equals(delegadoAux.getSexoDelegado())){
						nDelegadosHombresNuevos--;
					}else if(W83bClsConstantes.CONSTANTE_MUJER.equals(delegadoAux.getSexoDelegado())){
						nDelegadosMujeresNuevos--;						
					}	
					
					 delegados = (String)numDelegadosMasPorSindicato.get(delegadoAux.getCodSindicato()+"_"+delegadoAux.getCodColegio()+"_"+delegadoAux.getSexoDelegado());
						if(StringUtils.isEmpty(delegados)){
							delegados = "0";
						}
						delegadosInt = Integer.parseInt(delegados);
						delegados = String.valueOf((delegadosInt-1));
						
						numDelegadosMasPorSindicato.put(delegadoAux.getCodSindicato()+"_"+delegadoAux.getCodColegio()+"_"+delegadoAux.getSexoDelegado(),delegados);
					
					incidenciasBean.getListaDelegados().add(delegado);
				}
			}
			
			incidenciasBean.setNumDelegadosHombresNuevos(nDelegadosHombresNuevos);
			incidenciasBean.setNumDelegadosMujeresNuevos(nDelegadosMujeresNuevos);
			incidenciasBean.setDifDelegados(numDelegadosMasPorSindicato);
			
			incidenciasBean.setListaDelegadosActa((ArrayList)contexto.get("w83bListaDelegadosIncidencias"));
			
			if (contexto.get("w83bMapaFileIncidencias")!=null)
			{

				HashMap mapaFiles =(HashMap)contexto.get("w83bMapaFileIncidencias");
				Iterator iter = mapaFiles.keySet().iterator();
				W83bDocBean docBean=null;
				while (iter.hasNext())
				{
					HashMap datosFile=(HashMap)mapaFiles.get(iter.next());
					docBean= new W83bDocBean();//NOPMD
					docBean.setFileData((InputStream)datosFile.get("documentoStream"));
					docBean.setTamanyo(((Long)datosFile.get("tamanyo")).intValue());
					docBean.setTipoDocumento(((String)datosFile.get("tipodocumento")).split("_")[0]);
					docBean.setCodFase(((String)datosFile.get("tipodocumento")).split("_")[1]);
					docBean.setCodTramite(((String)datosFile.get("tipodocumento")).split("_")[2]);
					docBean.setNombre((String)datosFile.get("nombreDocumento"));
					docBean.setNumeroRegistro((String)datosFile.get("numregistro"));
					docBean.setFechaRegistro((String)datosFile.get("fecharegistro"));
					docBean.setUsuario((String)datosFile.get("usuario"));
					
					
					incidenciasBean.getListaDocs().add(docBean);

				}
			}
			if (contexto.get("w83bListaBorradoFileIncidencias")!=null)
			{

				ArrayList listaBorrados =(ArrayList)contexto.get("w83bListaBorradoFileIncidencias");
				incidenciasBean.setListaDocsBorrados(listaBorrados);
				if(StringUtils.isEmpty(incidenciasBean.getCodSelec())){
					HashMap w83bMapaIncidencias = (HashMap)contexto.get("w83bMapaIncidencias");
					incidenciasBean.setCodSelec((String)w83bMapaIncidencias.get("codSelec"));

				}
			}
			
			contexto.set("w83bNuevaIncidenciasBean",incidenciasBean);
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		return mapping.findForward("ok");
	}

}
